{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Line Normalization (dewarping)\n",
    "\n",
    "( These notes are based on: https://github.com/tmbdev/ocropy/blob/758e023f808d88e5995af54034c155621eb087b2/OLD/normalization-api.ipynb from 2014 )\n",
    "\n",
    "The line normalization is performed before the actual text recognition and before the actual training. Therefore, the same line normalization should be used in the recognition as it is used in the training. The line normalization tries to dewarp the line image and normalize its height. Previously different methods were explored, but nowadays the default method should work well. This notes will give some background information."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline\n",
    "from pylab import imshow\n",
    "from scipy.ndimage import filters,interpolation\n",
    "import ocrolib\n",
    "from ocrolib import lineest\n",
    "\n",
    "#Configure the size of the inline figures\n",
    "figsize(8,8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate distorted image\n",
    "\n",
    "First, we generate a distorted image from an example line. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(200, 1400)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd5ff910fd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "image = 1-ocrolib.read_image_gray(\"../tests/010030.bin.png\")\n",
    "image = interpolation.affine_transform(image,array([[0.5,0.015],[-0.015,0.5]]),offset=(-30,0),output_shape=(200,1400),order=0)\n",
    "\n",
    "imshow(image,cmap=cm.gray)\n",
    "print image.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Normalizer and measure the image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# CenterNormalizer\n",
      "48\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fd5ff69ce50>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd60807d2d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#reload(lineest)\n",
    "mv = ocrolib.lineest.CenterNormalizer()\n",
    "mv.measure(image)\n",
    "\n",
    "print mv.r\n",
    "plot(mv.center)\n",
    "plot(mv.center+mv.r)\n",
    "plot(mv.center-mv.r)\n",
    "imshow(image,cmap=cm.gray)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dewarp\n",
    "\n",
    "The dewarping of the text line (first image) tries to find the center (blue curve) and then cut out slices with some fixed radius around the center. See this illustration [<img width=\"50%\" src=\"https://cloud.githubusercontent.com/assets/5199995/25406275/6905c7ce-2a06-11e7-89e0-ca740cd8a21c.png\"/>](https://cloud.githubusercontent.com/assets/5199995/25406275/6905c7ce-2a06-11e7-89e0-ca740cd8a21c.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(96, 1400)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fd5ff5c39d0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nMf8PAbj8hk7eQgkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd5ff497f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dewarped = mv.dewarp(image)\n",
    "\n",
    "print dewarped.shape\n",
    "imshow(dewarped,cmap=cm.gray)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fd5ff4f4dd0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n+rjNn9tEu7HXKxHWIuk6LiUtbtHrJk1a0s4c05UkqZG1aOlK2jy2prWKTLqdrd1l8+7QVTVI9/Ze\nxwu8MfjuJNnTwXuo7b4M837/dfm+Wp7WQxBjrLNzdS8nOS/JXyd5MMn9Sd6YZF+SO5I8nOT2JOcN\nHawkSats3jHdjwB/V1WvA14PPATcCHy+qn4YuBP44DAhbrYkc5+tnXztGM/utL3dbLOqes6jld1O\ntNrtdxrKXvaJvm6cMu928kYtq2u3x93MURleAtxTVa/asvwh4Ker6niSi4DDVfXaGe/vpYb0cUlA\n3+sbYr3baf39N8leD2J9l/ey4hiybi26H/WRYJYV+9bP2CmOZR5zxna8WwdVNbOg5mnpXgr8R5I/\nT3J3kj9N8kLgwqo63n34U8AF/YU7fq1ala1bM1pvy2wpr7NZ5WrZapZ5ku45wOXAH1fV5cD/MOla\n3lqjrGGSJJ3BPEn3ceCxqvrn7u/bmCTh40kuBOi6l7/Rd3CeMUrSc3lsXF07Jt2uC/mxJK/pFl0J\n3A8cAq7vll0HHBwiQM3PHVGSxm3HiVQASV4PfAx4HvBV4F3A2cBngFcAjwLvqKoTM9675wyw2+TR\nciJVq8kEY5nks87GUsYt4mj9XTdlIlUfcSyzHjqRqn/bTaSaK+kuomXSnVrn4Osz6a6PsZSxSXez\nk+5e123SHaftkq6/SLVG3BmkxTg0M5vHlv6YdCX1aq+Jy4S3N7u5FljL512GJElqxJbuLnkmqbHx\nJheL28RW9lgmi26atUq6VhJpGCb2toaa6azls3tZkqRG1qqlOxTP7lfbUK2Cview7PUeykPFsy5s\nFZ5mWSzfqJNuqxseWxGl+SxzX2l9A/Qxm+euRju9Vssx6qS7bFbW1dX6oDy2SSnbtXoXbU2PyRDf\nZTfJbJHPa2mZv+yn53JMV5KkRlampdu6a8mzPWlvWtys3f1ztqF+SlP9WZmkq9k8+KyfPk4wd6oX\n6zQ+utfvspt9ZzfrGNs+ObZ4Np3dy5IkNbKSLd2+z9w8E9Qma9FS3O363Ce1rlYy6a67Ve/uG4N1\nOWivy/dopUV5uU20CJOupFNaJxQTmDaNY7qSJDViS3cF2TqQpNVkS1eSpEbmSrpJfjPJV5Lcm+Qv\nkpyb5JIkR5IcS/LpJLaaJUk6gx2TbpKXAe8FLq+qH2XSJf3LwIeBm6vqNcAJ4N1DBipJ0qqbt3v5\nbOBFXWv2BcCTwJuB27r/vwV4e//hSZK0PnZMulX1JHAz8HXgCeC/gLuBE1X1bPeyx4GXDRWkJEnr\nYJ7u5fOBA8DFTBLri4CrB45r41TVqYckaT3N0738c8BXq+pbVfUM8DfAFcD5SU6+fz+TVrAkSdrG\nPEn368CbknxfJheIXgncD3wBuKZ7zXXAwWFCFEyuzT35kCStpszTnZnkJuBa4GngHuA9TFq3twL7\numXvrKqnZ7zX/tI5rNrtwiRJ26uqmQftuZLuIky68zHpStL62C7p+oMWSzRnL0ODSCRJLfgzkJIk\nNWLSlSSpEbuXR8guZUlaT7Z0JUlqxKQrSVIjJl1Jkhox6UqS1IhJV5KkRpy9vETOUpakzWJLV5Kk\nRky6kiQ1YtKVJKkRk64kSY2YdCVJasSkK0lSIyZdSZIaMelKktRIqmrZMUiStBFs6UqS1IhJV5Kk\nRgZNukmuTvJQkmNJbhhyXWOX5GtJvpzkniRf6pbtS3JHkoeT3J7kvGXHObQkH09yPMm9U8u2LYck\nf5jkkSRHk1y2nKiHtU2Z3JTk8SR3d4+rp/7vg12ZPJjkquVEPbwk+5PcmeT+JPcleV+3fNPry9Zy\neW+3fGPrTJLnJ/lid3y9L8lN3fJLkhzpctCnk5zTLT83ya1dmfxTklc2C7aqBnkwSej/ClwMPA84\nCrx2qPWN/QF8Fdi3ZdmHgd/unt8A/N6y42xQDj8JXAbcu1M5AG8B/rZ7/kbgyLLjb1gmNwEfmPHa\n1wH3MLlZySXdPpZlf4eByuUi4LLu+YuBh4HXWl+2LZeNrjPAC7t/zwaOdHXgr4BruuV/Avxq9/zX\ngI92z38JuLVVnEO2dN8APFJVj1bV08CtwIEB1zd24bk9CweAW7rntwBvaxrRElTVPwLf3rJ4azkc\nmFr+ye59XwTOS3Jhizhb2qZMYFJntjrA5ADx3ar6GvAIk31t7VTVU1V1tHv+HeBBYD/Wl1nl8vLu\nvze2zlTV/3ZPn8/kBKOANwO3dcunj7HTdeizwJWNwhw06b4ceGzq78c5XTE2UQG3J7kryXu6ZRdW\n1XGY7EjABUuLbrku2FIOJw+UW+vQE2xWHfr1rpv0Y1NdqBtZJkkuYdIbcITn7jcbW1+myuWL3aKN\nrTNJzkpyD/AU8PfAvwEnqurZ7iXTOehUmVTVM8CJJC9tEacTqdq5oqp+HHgrkx3jp5gk4mlevzVh\nOcBHgVdV1WVMDiI3LzmepUnyYiatkfd3LTv3G2aWy0bXmap6tqp+jElvyBuYdLnPq9nNzYdMuk8A\n04PT+7tlG6mq/r3795vA55hUiuMnu7+SXAR8Y3kRLtV25fAE8Iqp121MHaqqb1Y34AT8Gae7Azeq\nTLqJL58FPlVVB7vFG19fZpWLdWaiqv4bOAz8BHB+kpN5bvp7nyqTJGcDL6mqb7WIb8ikexfw6iQX\nJzkXuBY4NOD6RivJC7uzUpK8CLgKuI9JeVzfvew64ODMD1g/4XvPLKfL4XpOl8Mh4FcAkryJSVfR\n8TYhNvc9ZdIlk5N+EfhK9/wQcG03+/JS4NXAl5pF2d4ngAeq6iNTy6wvM8plk+tMkh882Z2e5AXA\nzwMPAF8AruleNn2MPdT9Tff/dzYLduDZZFczmVn3CHBjy5lsY3oAlzKZvX0Pk2R7Y7f8pcDnuzK6\nAzh/2bE2KIu/BJ4E/g/4OvAuYN925QD8EZPZll8GLl92/A3L5JPAvV29+RyTccyTr/9gVyYPAlct\nO/4By+UK4Jmpfefu7piy7X6zIfVlu3LZ2DoD/EhXDke7MvidbvmlTMa7jzGZyfy8bvnzgc90uekI\ncEmrWP0ZSEmSGnEilSRJjZh0JUlqxKQrSVIjJl1Jkhox6UqS1IhJV5KkRky6kiQ1YtKVJKmR/wda\nVmw2smCxggAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd5ff5680d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "imshow(dewarped[:,:320],cmap=cm.gray,interpolation='nearest')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Normalize\n",
    "\n",
    "This will also dewarp the image but additionally normalize the image size (default `x_height` is 48)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(48, 700)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fd5ff3ac410>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nLzVq1ODOnTsddSgtLSXgm7OxZ88eFa4PDezcudOS7vr169U5t9vNL7/80vE5JyYmcseOHSR9KwDc\nbjfdbje3b99uK/eBzvmhhx6i2+1W+blixQqb/bIiEcjXX3/t+JwCdWzfvj3vuece23m328158+ap\n41D5tHTpUovu1113XZnvGkkuW7YsquU+yr8Jse/WtlwAzAHQG2HO2JaK6s7ZyZADBw6QJHfv3m07\n98svv5Aki4qKovbgdOfcrFkz2/kGDRqomd2lpaXs37+/LY5e68/MzHRMJzU11VZoXS4XExMTbXF1\n5yzv++GHH9LlclkmbUUip+KczzvvPP7hD3+whT/22GMWe+6++24++uij6rikpIQXXHABk5OTuXz5\ncpv9JJmRkWG55+23367OHTlyxDKbnCTPPfdcFVe2XlatWkWv10uv18uNGzeSJCdNmqTiZWRk0Ov1\nWu5TUlLC//3vf+q4TZs20XoRFadynWzZDB061BK+detWzpgxQx23atWKJNWseinPPvssSWenE4mU\nlpby73//OwFwzpw5yrZXX3016DXZ2dk8cuSIiqvbJNEngDZp0sSWP7m5uXzmmWfUsZwVPGHCBJLk\nkCFD1PV6heCCCy5Q4WlpaSTJ/Px8m01OZU+yadMmFab3MJ133nkETlai9DK9ZMkSiyORM9yd3rvd\nu3er3gCp+8KFCy3xVqxYYbteovdIAODw4cNJkvfee68K0x3ct99+63gfPUyuFjl06JClFXrdddc5\nxl+3bp1juK57YD7J8JycHCYlJanwqVOnOubT8ePHSTLob6rsOSLJl156KarlPprCinTOAFLhazHX\nAvBbwDnHGdtS0VDOuU+fPmqGsJNz7t69O8nYOWenCWH6mHPghLCMjAxLDZ/0tV6cWm+bN28m6euy\nGjZsmIof+FICVudMkllZWXS73Rw0aJCtAJdXynLO/fr1Y7Vq1Ths2DDVkpk0aRJfeeUV3n///QSc\nKxxut9vSYrjjjjtUd9WiRYtUbf/EiRMkyd9//53dunVT6erOuXv37rJwK3TnLLs29dbiP/7xj6Dl\nS2f79u2WGftvvvlmtF7EoOmHkoceeoik3Tl369aNJDl//nwCJ51z4PXSGVQF5wxAVXyKiop4/vnn\nq/CHH36YpG+ZWahnl5SU5OicnZ5trVq1uHr1apIn3ye9lfnHP/7RZhNJbt682TH9Bx98UIWdc845\n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\nt1rKAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd5ff437550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "normalized = mv.normalize(image,order=0)\n",
    "\n",
    "print normalized.shape\n",
    "imshow(normalized,cmap=cm.gray)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
